﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Collections;

namespace Distrackting.DataLayer
{
    public class BDUtilizadores
    {
        public static void setNome(Guid cod_user, String num)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.numero_telemovel = num;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e) { throw e; }
        }

        public static void setSexo(Guid cod_user, char s)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.sexo = s;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e) { throw e; }
        }

        public void setTelemovel(Guid cod_user, String num)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.numero_telemovel = num;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public void setEmail(Guid cod_user, String email)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.email = email;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static void setDataNascimento(Guid cod_user, DateTime data)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.data_nascimento = data;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public void setLocalidade(Guid cod_user, Guid localidade)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.cod_localidade = localidade;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public void despromoverUtilizador(Guid cod_user, Guid nivel)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.cod_nivel = nivel;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public void promoverUtilizador(Guid cod_user, Guid nivel)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                u.cod_nivel = nivel;
                dataUtilizador.changeUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static IQueryable<Utilizador> getListaUtilizadores()
        {
            try
            {
                IQueryable<Utilizador> lusers = dataUtilizador.getUtilizadores();

                return lusers;
            }
            catch (Exception e)
            {
                throw e;
            }

        }

        public static void removeUtilizador(Guid cod_user)
        {
            try
            {
                Utilizador u = dataUtilizador.getUtilizador(cod_user);
                dataUtilizador.deleteUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public bool validaEmail(String email)
        {
            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                Utilizador ut = (from u in dbData.Utilizadors
                                 where u.email == email
                                 select u).FirstOrDefault();

                if (ut == null) return true;

                return false;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public void criaUtilizador(String email, String pass)
        {
            try
            {
                Utilizador u = new Utilizador();
                u.email = email;
                u.password = pass;
                u.cod_nivel = new Guid("adf0403a-ea0c-40d3-8436-290c76640c54");
                u.bloqueado = false;
                u.aprovado = true;
                u.data_ultimo_login = System.DateTime.Today;
                dataUtilizador.createUtilizador(u);
            }
            catch (Exception e)
            {
                throw e;
            }
            
        }

    }
}
